package 动态规划;

public class 打家劫舍Ⅱ {
    //Ⅱ的版本和之前的对比的话 就是头和尾会成环 所以头和尾不能取
    //所以有三种情况 1.不取头不取尾 2.取头不取尾 3.不取头取尾（但是二三种情况是包括第一种情况的）
    public int rob(int[] nums){
        if (nums.length==0||nums==null){
                return 0;

        }
        if (nums.length==1) return nums[0];
        int len = nums.length;
        //这里就是掐头掐尾的去比较最大的
        return Math.max(robAction(nums,0,len-1),robAction(nums,1,len));
    }

    private int robAction(int[] nums, int start, int end) {
        int x=0,y=0,z=0;
        //这里还是和动态规划那里一样 思路都是比较前一个和前俩哥哥谁大
        for (int j = start; j < end; j++) {
            y=z;
            z=Math.max(x+nums[j],y);
            x=y;
        }

        return z;
    }
}
